package com.ejuornal.service;

import java.util.List;

import com.ejuornal.bean.Page;
import com.ejuornal.bean.PerPeriodical;
import com.ejuornal.bean.PerPeriodicalSub;

public interface PerPeriodicalService {
	/**
	 * 添加当前期刊信息
	 * @param perPeriodical
	 */
	public void add(PerPeriodical perPeriodical);
	
	/**
	 * 更新每期期刊的信息
	 * @author syb
	 * @param perPeriodical
	 */
	public void update(PerPeriodical perPeriodical);
	
	public int add_2(final  PerPeriodical perPeriodical);
	/**
	 * 更新当前期刊信息的状态
	 * @param perPeriodical
	 */
	
	public void updateStatus(PerPeriodical perPeriodical, String status);

	/**
	 * 更新当前期刊的得分
	 * @param perPeriodicalId
	 * @param score
	 */
	public void updateScore(int perPeriodicalId, float score);
	
	/**
	 * 批量删除当前期刊信息
	 * @param perPeriodicalId
	 */
	
	public void delete(int... perPeriodicalId);

	/**
	 * 根据当前期刊的ID号查询
	 * @param perPeriodicalId ID号
	 * @return
	 */
	public PerPeriodical findById(int perPeriodicalId);
	
	/**
	 * 根据期刊的ID和期刊号查询某一期期刊
	 * @param periodicalId 期刊ID号
	 * @param number 期刊号
	 * @return PerPeriodical
	 */
	public PerPeriodical findByPeriodicalNum(int periodicalId, int number);
	
	/**
	 * 根据期刊ID号和该期期刊的期刊号查询上期期刊
	 * @param periodicalId 期刊的ID号
	 * @param number 该期期刊期刊号
	 * @return 返回PerPeriodical
	 */
	public PerPeriodical findUpPerPeriodical(int periodicalId, int number);
	
	/**
	 * 根据期刊ID号和该期期刊的期刊号查询下期期刊
	 * @param periodicalId 期刊的ID号
	 * @param number 该期期刊期刊号
	 * @return 返回PerPeriodical
	 */
	public PerPeriodical findNextPerPeriodical(int periodicalId, int number);
	
	/**
	 * 根据字段property进行order（倒序或正序）排列查询,例：用于分类查询期刊（按评分倒序查询）
	 * @param current_record 当前记录数
	 * @param url 地址
	 * @param property 字段
	 * @param order 排序
	 * @return 返回Page<User>对象
	 */
	public Page<PerPeriodical> findByOrder(int current_record,String url, String property, String order);

	/**
	 * 根据状态查询
	 * @param current_record 当前记录数
	 * @param url 地址
	 * @param status 状态
	 * @return 返回Page<PerPeriodical>对象
	 */
	public Page<PerPeriodical> findByStatus(int current_record,String url, String status);

	/**
	 * 查询某期刊出版的所有期刊
	 * @param current_record
	 * @param url
	 * @param periodicalId
	 * @return
	 */
	public Page<PerPeriodical> findByPeriodicalId(int current_record,String url, int periodicalId);
	
	public List<PerPeriodical> findNew(int count);
	
	/**
	 * Title:findTop
	 * Description:查询前几条信息
	 * @param count
	 * @return
	 * List
	 */
	public List<PerPeriodical> findTop(int count);
	
	/**
	 * 查询期刊periodicalId一共有多少期
	 * @param periodicalId 期刊号
	 * @param status 每期期刊的状态
	 * @return 返回得到数据条数
	 */
	public List<PerPeriodical> findPerPeriodicalNumbers(int periodicalId, String status);
	
	/**
	 * 查找最新期刊
	 * @author lyy
	 * @param periodicalId
	 * @param status
	 * @return
	 */
	public PerPeriodical findNewPerPeriodical(int periodicalId, String status);
	
	/**
	 * 根据主编的ID查询不同状态的每期期刊
	 * @author syb
	 * @param current_record
	 * @param url
	 * @param userId
	 * @param status
	 * @return
	 */
	public Page<PerPeriodical> findByUserIdPPStatus(int current_record, String url, int userId, String status);
	
	/**
	 * 根据期刊的ID查询不同状态的每期期刊
	 * @author syb
	 * @param current_record
	 * @param url
	 * @param periodicalId 期刊ID
	 * @param status 每期期刊的状态
	 * @return
	 */
	public Page<PerPeriodical> findByPeriodicalIdPPStatus(int current_record, String url, int periodicalId, String status);
	
	/**
	 * 邮箱订阅，发送邮件功能，查找需要发送邮件的期刊
	 * @param status
	 * @return
	 */
	
	public List<PerPeriodicalSub> findBystatus(int status);
	
	/**
	 * 增加需要发送邮件的期刊
	 * @param pps
	 */
	
	public void add(PerPeriodicalSub pps);
	
	/**
	 * 查询不同状态的每期期刊，针对编辑
	 * @param userId 编辑ID
	 * @param status 每期期刊状态
	 * @return
	 */
	public List<PerPeriodical> findPerPerEditor(int userId, String status);
	
	/**
	 * 取消需要发送邮件的期刊
	 * @param pps
	 */
	public void update(PerPeriodicalSub pps);
}
